package com.zy.explore.demo.infrastructure.utils;

import com.wenwo.common.domain.vo.PageVO;

import java.util.List;

/**
 * description 内存分页工具类
 *
 * @author ZY
 * @date 2021年04月16日 16:50
 **/

public class MemoryPageUtil {

    /**
     * 内存分页
     *
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @param list 待分页的数据集合
     * @return 返回分页数据
     */
    public static <T> List<T> getPageList(int pageNum, int pageSize, List<T> list) {
        int fromIndex = (pageNum - 1) * pageSize;
        int toIndex = fromIndex + pageSize;
        if (toIndex >= list.size()) {
            toIndex = list.size();
        }
        return list.subList(fromIndex, toIndex);
    }

    /**
     * 根据总数量和数据集返回PageVO
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @param list 待内存分页的数据集合
     * @param <T> 集合类型
     * @return 返回该集合类型的分页数据
     */
    public static <T>PageVO<T> getPageVO(int pageNum, int pageSize, List<T> list) {
        int total = list.size();
        // 截取分页部分集合
        list = getPageList(pageNum, pageSize, list);
        return PageVO.of(pageNum, pageSize, total, list);
    }
}
